﻿package net.molchat.android.scrn;


//FIXME commented out class
public class ScrSmile {

}

//import java.util.Enumeration;
//
//import javax.microedition.lcdui.*;
//import javax.microedition.lcdui.game.*;
//
//import net.molchat.android.core.*;
//import net.molchat.android.media.*;
//import net.molchat.android.mess.*;
//
//
//
//
//// ======================================================== Экран выбора смайлов
//public final class ScrSmile extends WinGraph {
//
//// ================================================================== Переменные
//private int space = 2; // Дополнительное пространство
//private int tdW; // Ширина ячейки
//private int tdH; // Высота ячейки
//
///** Total number of columns */
//private int cTot;
//
///** Total number of rows */
//private int rTot;
//
//
//private int tdTot; // Кол-во ячеек
//
//private int selSml; // Выбранный смайл
//public String selSmlText; // Текст выбранного смайла
//
//private int dX; // Текущее смещение по горизонтали
//private int dY; // Текущее смещение по вертикали
//
///** Current offset by X axis */
////private int dXtouch;
//
///** Current offset by Y axis */
////private int dYtouch;
//
//
//private int[] smX; // Координаты смайлов от верхнего левого угла поля
//private int[] smY;
//
//// Фон
//private Image bg; // Картинка фона
//private int scrBg1 = 0xb0d0ff; // Цвет фона экрана 1
//private int scrBg2 = 0xffffff; // Цвет фона экрана 2
//
//private int lineSel = 0x000000; //Цвет линий выделенного сообщения
//private int bgSel = 0xd0ffd0; //Цвет фона выделенного сообщения
//
//// Lines
//private int lineGrid = 0xc0c0c0; // Grid lines color
//
//// Перемещение поля
//private double movX; // Смещение по оси X в точках при перемещении селектора
//private double movY; // Смещение по оси Y в точках при перемещении селектора
//
//// Набор смайлов
//private Pic[] sms; // Набор смайлов в виде массива
//private int smlDivider; // Smile clock tick divider
//
//public Win winOld; // Ссылка на предыдущее окно
//
//// Команды
//private boolean[] coms = new boolean[ScrMan.COM_TOT];
//private int smsTot; // Кол-во смайлов
//private int smlTotH; // Smiles total height
//
//{
//	coms[ScrMan.COM_SEL] = true;
//	coms[ScrMan.COM_CAN] = true;
//}
//
//
//// =============================================================== Инициализация
//public ScrSmile() {
//
//	Log.v("ScrSmile.init", "=====");
//
//	init();
//}
//
//
//// ========================================== Получено событие изменения статуса
//public boolean chStat(String statText) {
//
//	return false;
//
//}
//
//
//// =========================================== Освободить ресурсы и закрыть окно
//public void close(int from) {
//
//	if (from <= Mess.LOCAL) {
//		Man.scrMan.retWin(winOld);
//	}
//}
//
//
//// ====================================================== Задать выбранный смайл
//public void comSet() {
//
//	if (selSml < this.smsTot) {
//		this.selSmlText = this.sms[selSml].getStrID();
//	} else {
//		selSmlText = null;
//	}
//}
//
//
//// =========================================== Отрисовать фон выделенного смайла 
//public void drawSelBg(int selRow, int selCol) {
//
//	// Прямоугольник
//	Draw.g.setColor(this.bgSel);
//	int rowX = dX + selRow * tdW;
//	int rowY = dY + selCol * tdH;
//	Draw.g.fillRect(rowX, rowY + 1, tdW + 1, tdH - 1);
//
//	// Линии
//	Draw.g.setColor(this.lineSel);
//	Draw.g.drawLine(rowX, rowY, rowX + tdW, rowY);
//	Draw.g.drawLine(rowX, rowY + tdH, rowX + tdW, rowY + tdH);
//}
//
//
//// ======================================================================= Выход
//public void exit(int from) {
//
//}
//
//
//// ============================= Получено событие состояния "в сети / не в сети"
//public void fOnline(boolean online) {
//
//}
//
//
//// ======================================================= Вернуть список команд
//public boolean[] getComs() {
//
//	return coms;
//}
//
//
//// ========================================================= Подготовка к работе
//public void init() {
//
//	// Получение смайлов
//	Enumeration smsTemp;
//	synchronized (Man.resMan) {
//		smsTemp = Man.resMan.getAll();
//		this.smsTot = Man.resMan.getLen(); // TODO оптимизировать создание массива необходимого размера
//	}
//
//	this.sms = new Pic[this.smsTot];
//	int count = 0;
//	Resource res;
//	while (smsTemp.hasMoreElements()) {
//		res = (Resource) smsTemp.nextElement();
//		if (res.type == Resource.TYPE_PIC_ANI
//				|| res.type == Resource.TYPE_PIC_STATIC) {
//			sms[count++] = (Pic) res;
//		}
//	}
//
//	this.smsTot = count;
//	// Инвертируем расположение смайлов
//	// TODO оптимизировать или исключить процесс
//	for (int q = this.smsTot >> 1; q >= 0; --q) {
//		Pic sTemp = this.sms[q];
//		this.sms[q] = this.sms[this.smsTot - q - 1];
//		this.sms[this.smsTot - q - 1] = sTemp;
//	}
//
//	// Размеры поля
//	cTot = Draw.dispW / (Man.resMan.smlMaxW + space);
//
//	tdW = Math.max(Draw.dispW / cTot, Man.resMan.smlMaxW + space);
//	rTot = (this.smsTot + cTot - 1) / cTot;
//	tdH = Math.max(Man.resMan.smlMaxH + space, (Draw.dispH - 1) / rTot);
//	smlTotH = rTot * tdH;
//
//	tdTot = rTot * cTot;
//
//	Log.v("ScrSmile.init", "Smiles table: " + cTot + "x" + rTot
//			+ " cells, every cell is " + tdW + "x" + tdH);
//
//	// Рассчет смайлов и отступов
//	int x = 0; // Координаты текущей ячейки
//	int y = 0;
//	smX = new int[tdTot];
//	smY = new int[tdTot];
//
//	for (int q = 0; q < tdTot; ++q) {
//		Pic s;
//		if (q < this.smsTot) {
//			s = this.sms[q];
//		} else {
//			s = this.sms[0];
//		}
//
//		smX[q] = ((tdW - s.w) >> 1) + x * tdW;
//		smY[q] = ((tdH - s.h) >> 1) + y * tdH;
//		if (++x >= cTot) {
//			++y;
//			x = 0;
//		}
//	}
//
//	// Рассчет смещений
//	if (tdW * cTot > Draw.dispW) {
//		movX = (Draw.dispW - tdW * cTot - 1) / (cTot - 1.);
//	} else {
//		movX = 0.;
//	}
//
//	if (smlTotH > Draw.dispH) {
//		movY = (Draw.dispH - smlTotH - 1) / (rTot - 1.);
//	} else {
//		movY = 0;
//	}
//
//	// Картинка фона
//	makeBg();
//}
//
//
//// ============================================= Извещение о пришедшем сообщении
//public boolean inText(int contType, int contNum, Message message) {
//
//	return false; // Do nothing
//}
//
//
//public boolean isGraphic() {
//
//	return true;
//}
//
//
//// =============================================== Обработчик событий клавиатуры
//public boolean keyPressed(int action) {
//
//	boolean fFlush = false;
//
//	switch (action) {
//		case Canvas.UP:
//			if ((selSml -= cTot) < 0) {
//				selSml += cTot;
//			}
//			offset(0, (int) (-movY));
//			fFlush = true;
//			break;
//
//		case Canvas.DOWN:
//			if ((selSml += cTot) >= tdTot) {
//				selSml -= cTot;
//			}
//			offset(0, (int) (movY));
//			fFlush = true;
//			break;
//
//		case Canvas.LEFT:
//			if (!((selSml % cTot) == 0)) {
//				selSml--;
//			}
//			fFlush = true;
//			break;
//
//		case Canvas.RIGHT:
//			if ((++selSml % cTot) == 0) {
//				selSml--;
//			}
//			fFlush = true;
//			break;
//
//		case Canvas.FIRE:
//			comSet();
//			close(Mess.LOCAL);
//			break;
//
//		case Canvas.GAME_A:
//			break;
//
//		case Canvas.GAME_B:
//			break;
//
//		case Canvas.GAME_C:
//			break;
//
//		case Canvas.GAME_D:
//			break;
//	}
//
//	prepare(null);
//	return fFlush;
//
//}
//
////======================================================== Обработчик клавиатуры
//public boolean keyState(int state) {
//
//	boolean fFlush = false;
//
//	if ((state & GameCanvas.UP_PRESSED) != 0) {
//		if ((selSml -= cTot) < 0) {
//			selSml += cTot;
//		}
//		offset(0, (int) (-movY));
//		fFlush = true;
//	} else if ((state & GameCanvas.DOWN_PRESSED) != 0) {
//		if ((selSml += cTot) >= tdTot) {
//			selSml -= cTot;
//		}
//		offset(0, (int) (movY));
//		fFlush = true;
//	} else if ((state & GameCanvas.LEFT_PRESSED) != 0) {
//		if (!((selSml % cTot) == 0)) {
//			selSml--;
//		}
//		offset((int) (-movX), 0);
//		fFlush = true;
//	} else if ((state & GameCanvas.RIGHT_PRESSED) != 0) {
//		if ((++selSml % cTot) == 0) {
//			selSml--;
//		}
//		offset((int) (movX), 0);
//		fFlush = true;
//	}
//
//	prepare(null);
//	return fFlush;
//}
//
//
//// =================================================== Создать всю картинку фона
//private void makeBg() {
//
//	try {
//		if ((bg == null) || (bg.getWidth() != Draw.dispW)
//				|| (bg.getHeight() != Draw.dispH)) { // Картинка фона еще не создана
//			Log.v("ScrSmile.makeBg", "Создаю картинки фона");
//
//			bg = Image.createImage(Draw.dispW, Draw.dispH);
//
//			Graphics g = bg.getGraphics();
//
//			Draw.rectG(g, 0, 0, Draw.dispW, Draw.dispH >> 2, scrBg1, scrBg2);
//			Draw.rectG(g, 0, Draw.dispH >> 2, Draw.dispW, Draw.dispH
//					- (Draw.dispH >> 2), scrBg2, scrBg1);
//		}
//
//	} catch (Exception e) {
//		Log.e("ScrSmile.makeBg", "Не могу создать картинку фона", e);
//	}
//}
//
//// ============================================================= Отрисовать окно
//public void prepare(Win winOld) {
//
//	if (winOld != null && winOld != this) {
//		this.winOld = winOld;
//	}
//
//	drawAll();
//}
//
//
////====================================================================== drawAll 
//private void drawAll() {
//
//	checkBg();
//	drawSmiles();
//}
//
//
////=================================================================== drawSmiles 
//private void drawSmiles() {
//
//	synchronized (Man.main) {
//		Draw.g.setClip(0, 0, Draw.dispW, Draw.dispH);
//		Draw.g.drawImage(bg, 0, 0, Graphics.TOP | Graphics.LEFT);
//		Draw.g.setColor(this.lineGrid);
//
//		// Отрисовка смайлов
//		Man.picAni.reset(bgSel, 0, 0, Draw.dispW, Draw.dispH, bg);
//
//		int refX;
//		int refY;
//
//		int selRow = selSml % cTot; // Выбранная строка
//		int selCol = selSml / cTot;
//
//		// Линии сетки
//		for (int q = 1; q < cTot; ++q) {
//			refX = dX + q * tdW;
//			Draw.g.drawLine(refX, 0, refX, Draw.dispH);
//		}
//
//		for (int q = 1; q < rTot; ++q) {
//			refY = dY + q * tdH;
//			Draw.g.drawLine(0, refY, Draw.dispW, refY);
//		}
//
//		drawSelBg(selRow, selCol);
//
//		for (int q = this.smsTot - 1; q >= 0; --q) {
//			refY = smY[q] + dY;
//			Pic sml = this.sms[q];
//			if ((refY + sml.h) > 0) { // Влазит сверху
//				if (refY - sml.h < Draw.dispH) { // Влазит снизу
//					refX = smX[q] + dX;
//					//					if (refX < Draw.dispW) { // Влазит справа
//					//						if (refX + sml.w >= 0) { // Влазит слева
//
//					if (q == selSml) { // Отрисовываем выделенный
//						if (sml.type == Resource.TYPE_PIC_ANI) { // Анимирован
//							Man.picAni.addPic(sml, refX, refY, true);
//						}
//					}
//
//					sml.draw(Draw.g, refX, refY);
//					//						}
//					//					}
//				}
//			}
//		} // for
//	}
//}
//
//
////======================================================================= drawBg 
//private void checkBg() {
//
//	if ((bg == null) || (bg.getWidth() != Draw.dispW)
//			|| (bg.getHeight() != Draw.dispH)) { // Backgroung picture is not created yet, or screen size is changed.
//		init();
//	}
//}
//
//
//// ====================================================== Тик системного таймера 
//public boolean tick() {
//
//	boolean fFlush = super.tick();
//
//	if (--this.smlDivider <= 0) {
//		this.smlDivider = Setting.smlDivider;
//		fFlush |= Man.picAni.drawAll();
//	}
//	return fFlush;
//}
//
//
//// ============================================================= Команды смайлов
//public void command(Command command) {
//
//	if (command == Man.scrMan.coms[ScrMan.COM_SEL]) {
//		comSet();
//		close(Mess.LOCAL);
//	} else {
//		close(Mess.LOCAL);
//	}
//}
//
//
////===================================================================== drawBtns
//public void drawBtns() {
//
//	//	if (this.msgBtns != null) {
//	//		this.fBtnShow = true;
//	//
//	//		int addW;
//	//		int addH;
//	//
//	//		// Calculate button box and offsets
//	//		synchronized (Man.main) {
//	//			switch (Setting.btnLayout) {
//	//				case Setting.BTN_LAY_HOR:
//	//					boxW = this.msgBtns.length * (Draw.btnW + Draw.btnGap) - Draw.btnGap;
//	//					boxH = Draw.btnH;
//	//					// Near pressing point
//	//					//					boxX = this.lastPX - (boxW >> 1);
//	//					//					boxY = this.lastPY - (Draw.btnH >> 1) - Draw.btnH;
//	//
//	//					addW = Draw.btnW + Draw.btnGap;
//	//					addH = 0;
//	//					break;
//	//				default: // Vertical layout
//	//					boxW = Draw.btnW;
//	//					boxH = this.msgBtns.length * (Draw.btnH + Draw.btnGap) - Draw.btnGap;
//	//					// Near pressing point
//	//					//					boxX = this.lastPX + (Draw.btnW >> 1);
//	//					//					boxY = this.lastPY - (boxH >> 1);
//	//
//	//					addW = 0;
//	//					addH = Draw.btnH + Draw.btnGap;
//	//			}
//	//
//	//			// Top right corner
//	//			//			boxX = Draw.dispW - Draw.fact - boxW;
//	//			//			boxY = Draw.fact;
//	//			boxX = 5;
//	//			boxY = 5;
//	//
//	//			// Disable smiles
//	//			Man.picAni.disArea(boxX, boxY, boxW, boxH);
//	//
//	//
//	//			// Draw buttons
//	//			for (int q = this.msgBtns.length - 1; q >= 0; --q) {
//	//				msgBtns[q].x = boxX + addW * q;
//	//				msgBtns[q].y = boxY + addH * q;
//	//				msgBtns[q].setState(Button.ST_NORMAL);
//	//				msgBtns[q].draw(Draw.g);
//	//			}
//	//		}
//	//	} else {
//	//		this.fBtnShow = false;
//	//	}
//
//
//}
//
//
//protected void doSelect(int x, int y) {
//
//	// Check if smile was already selected
//	int wasSel = selSml;
//
//	// Select smile
//	int row = (-dY + y) / tdH;
//	int col = (-dX + x) / tdW;
//	selSml = row * cTot + col;
//
//	// Redraw smiles
//	synchronized (Man.main) {
//		this.drawSmiles();
//	}
//
//	// If was selected add smile to text
//	if (wasSel == selSml) {
//		comSet();
//		close(Mess.LOCAL);
//	}
//}
//
//
//protected boolean doDrag(int dragOffX, int dragOffY) {
//
//	if (dragOffX != 0 || dragOffY != 0) {
//		if (offset(dragOffX, dragOffY)) {
//			synchronized (Man.main) {
//				this.drawSmiles();
//			}
//			return true;
//		} else {
//			return false;
//		}
//	} else {
//		return false;
//	}
//}
//
//
////======================================================================= offset
//private boolean offset(int offX, int offY) {
//
//	//	dX = (int) (movX * selCol);
//	//	dY = (int) (movY * selRow);
//
//	int minOff = -(smlTotH - Draw.dispH);
//	int maxOff = 0;
//
//	if (offY < 0 && dY > minOff) { // Move up
//		dY += offY;
//		if (dY < minOff) {
//			dY = minOff;
//		}
//		return true;
//	} else if (offY > 0 && dY < maxOff) { // Move down
//		dY += offY;
//		if (dY > maxOff) {
//			dY = maxOff;
//		}
//		return true;
//	}
//
//	return false;
//}
//
//
//}
